 package entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name="CondicionCompra")
public class CondicionCompraEntity implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = -6002961543767924342L;
	@Id
	private int idCondicion;
	private String formaDePago;
	private String plazo;
	private double intereses;
	private double descuentos;
	@ManyToMany(mappedBy="condicionCompra", fetch = FetchType.LAZY)
	private List<ClienteEntity> cliente=new ArrayList<ClienteEntity>();
	
	@ManyToMany(mappedBy="condicionCompra", fetch = FetchType.LAZY)
	private List<ProveedorEntity> proveedor = new ArrayList<ProveedorEntity>();
	
	@ManyToMany(mappedBy="condicionCompra", fetch = FetchType.LAZY)
	private List<CotizacionEntity> cotizaciones = new ArrayList<CotizacionEntity>();
	
	public String getFormaDePago() {
		return formaDePago;
	}
	public void setFormaDePago(String formaDePago) {
		this.formaDePago = formaDePago;
	}
	public String getPlazo() {
		return plazo;
	}
	public void setPlazo(String plazo) {
		this.plazo = plazo;
	}
	public double getIntereses() {
		return intereses;
	}
	public void setIntereses(double intereses) {
		this.intereses = intereses;
	}
	public double getDescuentos() {
		return descuentos;
	}
	public void setDescuentos(double descuentos) {
		this.descuentos = descuentos;
	}
	public CondicionCompraEntity(String formaDePago, String plazo,
			double intereses, double descuentos) {
		super();
		this.formaDePago = formaDePago;
		this.plazo = plazo;
		this.intereses = intereses;
		this.descuentos = descuentos;
	}
	public CondicionCompraEntity(){
	}

	public int getIdCondicion() {
		return idCondicion;
	}
	
	public void setIdCondicion(int idCondicion) {
		this.idCondicion = idCondicion;
	}
	
	public List<ClienteEntity> getCliente() {
		return cliente;
	}
	
	public void setCliente(List<ClienteEntity> cliente) {
		this.cliente = cliente;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		long temp;
		temp = Double.doubleToLongBits(descuentos);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		result = prime * result
				+ ((formaDePago == null) ? 0 : formaDePago.hashCode());
		temp = Double.doubleToLongBits(intereses);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		result = prime * result + ((plazo == null) ? 0 : plazo.hashCode());
		return result;
	}
	
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		CondicionCompraEntity other = (CondicionCompraEntity) obj;
		if (Double.doubleToLongBits(descuentos) != Double
				.doubleToLongBits(other.descuentos))
			return false;
		if (formaDePago == null) {
			if (other.formaDePago != null)
				return false;
		} else if (!formaDePago.equals(other.formaDePago))
			return false;
		if (Double.doubleToLongBits(intereses) != Double
				.doubleToLongBits(other.intereses))
			return false;
		if (plazo == null) {
			if (other.plazo != null)
				return false;
		} else if (!plazo.equals(other.plazo))
			return false;
		return true;
	}
	public void setProveedor(List<ProveedorEntity> proveedor) {
		this.proveedor = proveedor;
	}
	public List<ProveedorEntity> getProveedor() {
		return proveedor;
	}
	public List<CotizacionEntity> getCotizaciones() {
		return cotizaciones;
	}
	public void setCotizaciones(List<CotizacionEntity> cotizaciones) {
		this.cotizaciones = cotizaciones;
	}	
}
